Computers are currently utilized in the design, production engineering, manufacture and testing of many products. Examples in the electronic field include integrated circuits, printed circuit boards, and products using such components including computers, home electronic products and the like. Similar procedures are utilized for products such as home appliances, cameras, automobiles, and the like. Thus, computer controlled automation of design, manufacture and testing can be utilized in any industry where multiple steps are involved in the creation and fabrication of an end product.
Typically, a number of different pieces of equipment may be utilized to perform the various design, manufacture and testing operations and the user may have either off-the-shelf or customized software packages or tools which it utilizes for performing the various functions. In many instances, the languages, legal character strings, formats, syntax and other factors employed in or used to communicate with the various software tools are not completely compatible.
Currently, the software tools used to capture, verify, and analyze the performance of a design during the design phase, to lay out the design during the manufacturing engineering stage, to perform the various manufacturing steps during the manufacturing stage, and to test the various components of the end product during the testing stage are separate procedures, employed sequentially, with the output from one tool or process providing the input to a subsequent process. The most common procedure for employing these sequential processes is to await the completion of one process and to drive a subsequent process with the output from the previous process through the use of a command sequence entered at a keyboard or other input of one or more components of the system. Thus, the user, through use of a terminal display and a keyboard or other input, determines the sequence of operations, and in many intances assures the proper transfer of necessary information from one process to the next.
This separate invocation of individual processes can become quite tedious to the user, and separate additional programs called translators are often required to properly transfer data outputs from one process to another because of various incompatibilities between the programs. The user must be able to communicate with the processes in standard operating system language and must have a clear understanding of how to control the input and output of the various processes.
This requires that all people utilizing the system be fully knowledgeable in the operation of the overall system and of each of the tools being utilized therein. This further requires that any time a change is made in one of the software tools, for example, to upgrade or improve it, or in the language or procedures being used by any component in the system, all potential users of the system must be made aware of the change and must understand it in order to prevent errors in operation and to assure optimum operation of the system.
In addition, with existing systems, even a knowledgeable and skilled operator requires substantial time to complete a task because of the number of separate sequential operations which are required, and the operator must work carefully to assure that the task is completed properly. Since the operator may have little guidance in performing operations, errors occur even with the most careful operator, and the systems do not provide a systematic way of detecting errors when they are entered so that such errors may pass through the system, from process to process, without detection, resulting in cumulative errors which, once ultimately detected, may be time-consuming and expensive to correct.
Further, when a user determines that a new software tool not previously employed in the system should be added, there is no systematic way for adding such tool. As a result, a new data translator may need to be designed, developed, tested and verified and other procedures may be required to interface such tool into the system, all of which require substantial expertise, time and expense to accomplish successfully.
In particular, in existing systems, the software is generally provided only in object code form and a user may not be able to make modifications, or may do so only in source code which must be compiled in a separate operation, generally outside the system, before being usable by the system. It would be preferable if the user could control the system with code written in an interpretive extension language which is both machine and human readable.
A need, therefore, exists for an improved method and apparatus (sometimes collectively referred to as "system") for use with a plurality of different software design and production tools which substantially simplifies the use of such system for the end user, requiring the end user to have far less knowledge of the system and the software tools used therewith. More particularly, such system should control in a simple and systematic way the interface between the system operator and the various tools and processes to be performed on the system, control all communications between the various software tools in the system and assure that necessary interpretations and translations are performed and manage the sequencing of the tasks to be performed to accomplish a particular objective, so that the operator need merely indicate by a suitable input a desired objective, and the system can proceed to perform in proper sequence the various tasks required to achieve such objective. Such tasks can include transferring necessary information from one software tool to the next and prompting the user for additional inputs where required. Such a system should perform all necessary translations and interpretations between incompatible software tools and all such translations should preferably be transparent to both the user/operator and to the various software tools being run. Such a system should also provide the flexibility to be configurable and reconfigurable by use of relatively simple procedures by a system integrator, with such additions, enhancements, or other changes again being transparent to the operator. In particular, all controls for such a system should be written in an interpretive extension language which permits the controls to be easily modified by the user while still being machine readable. Thus, the system operator would always be utilizing the most recent enhanced version of the system with all its capabilities and should be prompted where appropriate to use such capabilities. To the extent the operator is not familiar with the function of a particular capability, a "help" function could be provided to assist him.